﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.SqlClient;
using Urgencias.Modelo;

namespace Urgencias.Controlador
{
    class UrgenciaControlador
    {
        private static UrgenciaControlador instance;
        Urgencia u;

        public UrgenciaControlador()
        {
            u = new Urgencia();
        }

        public static UrgenciaControlador Instance
        {
            get
            {
                if (instance == null)
                {
                    instance = new UrgenciaControlador();
                }

                return instance;
            }
        }
        public bool ingresarUrgencia(int ID_URGENCIA, int NUMEROBOX, string ENCARGADO, string PACIENTE, DateTime FECHAHORA_URGENCIA, string PRIORIDAD_URGENCIA, string ESPECIALIDAD_URGENCIA, string DIAGNOSTICO_URGENCIA)
        {
            try
            {
               // SqlConnection con = new SqlConnection(connectionString);
                SqlCommand com = new SqlCommand();
                

                com.CommandText = "INSERT INTO URGENCIA" +
                    "(NUMEROBOX, ENCARGADO, PACIENTE, FECHAHORA_URGENCIA, PRIORIDAD_URGENCIA, ESPECIALIDAD_URGENCIA, DIAGNOSTICO_URGENCIA)" + "VALUES" +
                    "(@numerobox, @encargado, @paciente, @fechahora_urgencia, @prioridad_urgencia, @especialidad_urgencia, @diagnostico_urgencia)";

                //com.Parameters.AddWithValue("@id_urgencia", ID_URGENCIA);
                com.Parameters.AddWithValue("@numerobox", NUMEROBOX);
                com.Parameters.AddWithValue("@encargado", ENCARGADO);
                com.Parameters.AddWithValue("@paciente", PACIENTE);
                com.Parameters.AddWithValue("@fechahora_urgencia", FECHAHORA_URGENCIA);
                com.Parameters.AddWithValue("@prioridad_urgencia", PRIORIDAD_URGENCIA);
                com.Parameters.AddWithValue("@especialidad_urgencia", ESPECIALIDAD_URGENCIA);
                com.Parameters.AddWithValue("@diagnostico_urgencia", DIAGNOSTICO_URGENCIA);
                com.Connection = Conexion.Instance.Con;
                SqlDataReader ejecutar = com.ExecuteReader();
                Conexion.Instance.Con.Close();
                return true;
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
                Conexion.Instance.Con.Close();
                return false;
                throw;
            }
        }
        public bool modificarUrgencia(int ID_URGENCIA,int NUMEROBOX, string ENCARGADO,string PACIENTE, DateTime FECHAHORA_URGENCIA,string PRIORIDAD_URGENCIA,string ESPECIALIDAD_URGENCIA,string DIAGNOSTICO_URGENCIA)
        {
            try
            {
                SqlCommand com = new SqlCommand();
                

                com.CommandText = "UPDATE URGENCIA " +
                    "SET ID_URGENCIA = @id_urgencia, NUMEROBOX = @numerobox, ENCARGADO = @encargado, PACIENTE = @paciente, FECHAHORA_URGENCIA = @fechahora_urgencia, PRIORIDAD_URGENCIA = @prioridad_urgencia, ESPECIALIDAD_URGENCIA = @especialidad_urgencia, DIAGNOSTICO_URGENCIA = @diagnostico_urgencia" +
                    "WHERE ID_URGENCIA = @id_urgencia";

                com.Parameters.AddWithValue("@id_urgencia", ID_URGENCIA);
                com.Parameters.AddWithValue("@numerobox", NUMEROBOX);
                com.Parameters.AddWithValue("@encargado", ENCARGADO);
                com.Parameters.AddWithValue("@paciente", PACIENTE);
                com.Parameters.AddWithValue("@fechahora", FECHAHORA_URGENCIA);
                com.Parameters.AddWithValue("@prioridad", PRIORIDAD_URGENCIA);
                com.Parameters.AddWithValue("@especialidad", ESPECIALIDAD_URGENCIA);
                com.Parameters.AddWithValue("@diagnostico", DIAGNOSTICO_URGENCIA);

                com.Connection = Conexion.Instance.Con;
                SqlDataReader ejecutar = com.ExecuteReader();
                using (Conexion.Instance.Con)
                {

                    // TODO terminar esto
                }
                //con.Close();

                return true;
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
                Conexion.Instance.Con.Close();
                return false;
                throw;
            }
        }

        public bool buscarUrgencia(int id, out int ID_URGENCIA,out int NUMEROBOX,out string ENCARGADO,out string PACIENTE, out DateTime FECHAHORA_URGENCIA,out string PRIORIDAD_URGENCIA,out string ESPECIALIDAD_URGENCIA,out string DIAGNOSTICO_URGENCIA)
        {
            Urgencia u = new Urgencia();
            ID_URGENCIA = u.IdUrgencia;
            NUMEROBOX = u.Box;
            ENCARGADO = u.Encargado;
            PACIENTE = u.RutPaciente;
            FECHAHORA_URGENCIA = u.FechaHoraUrgencia;
            PRIORIDAD_URGENCIA = u.PrioridadUrgencia;
            ESPECIALIDAD_URGENCIA = u.EspecialidadUrgencia;
            DIAGNOSTICO_URGENCIA = u.DiagnosticoUrgencia;

            try
            {
                SqlCommand com = new SqlCommand();
                

                com.CommandText = "select * from URGENCIA where ID_URGENCIA='" + id + "'";
                com.Connection = Conexion.Instance.Con;

                SqlDataReader ejecuta = com.ExecuteReader();

                if (ejecuta.Read() == true)
                {
                    u.IdUrgencia = (int)(ejecuta["ID_URGENCIA"]);
                    u.RutPaciente = (string)(ejecuta["PACIENTE"]);
                    u.Encargado = (string)(ejecuta["ENCARGADO"]);
                    u.EspecialidadUrgencia = ((string)(ejecuta["ESPECIALIDAD_URGENCIA"])).Trim();
                    u.PrioridadUrgencia = ((string)(ejecuta["PRIORIDAD_URGENCIA"])).Trim();
                    u.DiagnosticoUrgencia = ((string)(ejecuta["DIAGNOSTICO_URGENCIA"])).Trim();
                    u.FechaHoraUrgencia = (DateTime)(ejecuta["FECHAHORA_URGENCIA"]);
                    u.Box = (int)(ejecuta["NUMEROBOX"]);
                    ID_URGENCIA = u.IdUrgencia;
                    NUMEROBOX = u.Box;
                    ENCARGADO = u.Encargado;
                    PACIENTE = u.RutPaciente;
                    FECHAHORA_URGENCIA = u.FechaHoraUrgencia;
                    PRIORIDAD_URGENCIA = u.PrioridadUrgencia;
                    ESPECIALIDAD_URGENCIA = u.EspecialidadUrgencia;
                    DIAGNOSTICO_URGENCIA = u.DiagnosticoUrgencia;
                }
                else
                {
                    u = null;
                    return false;
                }
                Conexion.Instance.Con.Close();
                return true;
            }
            catch (Exception e)
            {
                Conexion.Instance.Con.Close();
                Console.WriteLine(e.Message);
                return false;
                throw;
            }
        }

    }
            
}
